/**
 * Copyright (C) 2011 Domenico Briganti <dometec@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package it.webrules.deploymanager.webapp.aop;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

/**
 * 
 * Intercetta le chiamate provenienti dall'esterno ed esegue un trim su 
 * tutti i parametri stringa e se la stringa è vuota imposta il valore a null
 * 
 * @author dometec
 * @since 16/04/2011
 * 
 */
public class TrimAndNullableInterceptor implements MethodInterceptor {

	public Object invoke(MethodInvocation invocation) throws Throwable {

		for (int i = 0; i < invocation.getArguments().length; i++) {

			if (invocation.getArguments()[i] != null && invocation.getArguments()[i] instanceof String) {
				String sparam = (String) invocation.getArguments()[i];

				String trim = sparam.trim();
				if (trim.isEmpty())
					invocation.getArguments()[i] = null;
				else
					invocation.getArguments()[i] = trim;
			}

		}

		return invocation.proceed();

	}
}